/*
 * @Author: wangjh wangjiahui0710@163.com
 * @Date: 2024-06-11 11:33:54
 * @LastEditors: wangjh wangjiahui0710@163.com
 * @LastEditTime: 2024-09-18 15:30:00
 * @FilePath: \cip-admin\src\pages\park\third-party\audit\state.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import type { JeecgBootTrSingupEnterprisePageUsingPost } from "@/genapi/exam";
import { jeecgBootTrSingupEnterprisePageUsingPost } from "@/genapi/exam";
import { usePage } from "@/hooks/use-page";

import type DetailDialog from "./components/detail-dialog.vue";

export const [createState, injectState] = createInjectionState(
	() => {
		// 查询条件
		const filter = ref<JeecgBootTrSingupEnterprisePageUsingPost.Body>();

		const page = usePage({
			initPageSize: 15,
			fetch: async ({ pageSize, currentPage }) => {
				const { result } = await jeecgBootTrSingupEnterprisePageUsingPost({
					data: {
						size: pageSize,
						current: currentPage,
						query: filter.value,
					},
				});
				return {
					records: result?.records ?? [],
					total: result?.total ?? 0,
					pageSize: result?.size ?? 0,
				};
			},
		});
		watchDeep(filter, () => page.execute({ currentPage: 0 }));

		// 当前选中的列表项
		const selectedList = shallowRef<typeof page.records.value>([]);
		// 表格组件
		const tableRef =
			shallowRef<InstanceType<GlobalComponents["TableWidget"]>>();

		// 详情弹窗组件
		const detailDialogRef = shallowRef<InstanceType<typeof DetailDialog>>();

		return {
			page,
			filter,
			selectedList,
			tableRef,
			detailDialogRef,
		};
	},
	{
		injectionKey: "pageState",
	},
);
